%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Trabalhos Relacionados
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Trabalhos Relacionados}\label{cap:trabalhos-relacionados}

   %%
   % Decentralização IMS
   %
   \section{Decentralização da Arquitetura IMS}

      \cite{ParallelSessionSetup} propõe um algoritmo paralelo para implementação da
operação de estabelecimento de sessão, mais especificamente, para implementação do S-CSCF.
O algoritmo está baseado na separação do processamento de requisições de
estabelecimento de sessão entre dispositivos localizados em um mesmo domínio de rede,
consequentemente processadas pelo mesmo S-CSCF, e dispositivos localizados em domínios de
rede diferentes. 

      Adicionalmente, o algoritmo proposto considera a utilização de cache de informações
do S-CSCF dos domínios externos. Conforme discutido pelos autores, a existência de cache
de informações reduz o acesso ao I-CSCF, pois elimina alguns passos do fluxo de troca de
mensagens, reduzindo também o tempo gasto para estabelecimento de sessão.


      \cite{P2PICIN2006} propõe uma abordagem baseada em P2P para o protocolo SIP,
visando a decentralização dos servidores para implementação de redes IMS. Sua ideia
básica é distribuir os elementos funcionais, tais como o HSS, o CSCF e os servidores de
aplicação. 

    Adicionalmente, o trabalho discute uma abordagem híbrida, onde existem alguns
elementos na rede P2P denominados super-peers que formam a base da rede; os demais
servidores são conectados à rede P2P através dos super-peers.

      

    %%
    % P2PSIP
    %
    \section{Peer to Peer SIP (P2PSIP)}

      Em \cite{DecentralizingSIP} e \cite{p2psip} é apresentado o P2PSIP, uma
iniciativa do IETF para especificar uma nova versão do protocolo SIP baseado em redes
P2P. 

      O protocolo SIP conforme foi especificado, é um protocolo que segue o modelo
requisição/resposta, com características centralizadas, principalmente pela existência do
servidor de registro. 

      Já o P2PSIP é uma coleção de nós organizados em uma rede P2P. A
base do funcionamento do P2PSIP é a especificação do protocolo RELOAD (REsource
LOcation And Discovery), \cite{relaod-p2psip}, o qual é responsável pela
implementação de um serviço de localização distribuído, eliminando a
necessidade de um servidor de registro centralizado. 

      A localização dos recursos no RELOAD é feita através de implementações de DHT.  Cada
nó da rede P2P executa um algoritmo distribuído que possibilita o armanzenamento de dados
em mais de um nó, além de prover busca eficiente na localização de recursos. No caso da
busca eficiente, o P2PSIP assume que sendo utilizado qualquer implementação de DHT,a
busca será feita em $log(n)$, onde $n$ representa o número de nós, conforme demonstrado
em \cite{chord}.

      A utilização propsota pelo P2PSIP envolve duas funções básicas:

  \begin{itemize}
    \item \textit{Registro}: UAs podem utilizar a funcionalidade de
persistência
de dados do RELOAD para armazenar o mapeamento entre seu AoR e seu
identificador
de nó da rede, e obter os identificadores de nós de outros UAs.

    \item \textit{Rendezvous}\footnote{Optei pelo termo original, sem
tradução}: Uma vez que um determinado UA descobre o identificador de nó do
dispositivo ao qual deseja se conectar, este usará o sistema de roteamento de
mensagem do RELOAD para iniciar uma conexão direta com o UA destino para troca
de mensagens SIP.
  \end{itemize}

      Em \cite{relaod-p2psip} é apresentado um exemplo simples. Supondo que Bob
faça o registro na rede com o Identificador de Nó [1234] mapeado para sua AoR
[bob@dht.example.com]. Quando Alice desejar se comunicar com Bob, utilizará o
RELOAD para realizar uma busca na rede pelo AoR de Bob, [bob@dht.example.com].
Nesse momento, o RELOAD retornará para Alice o Identificador de Nó do Bob,
[1234]. De posse do Identificador de Nó do Bob, Alice pode iniciar a troca
de mensagens SIP padrão (INVITE, CANCEL, etc.) através de uma conexão direta.
  

   %%
   % TS
   %
   \section{Espaço de Tuplas}
   
    %
    % DSM-based mobile grid
    %
    \subsection{Execution time prediction in DSM-based mobile grids}

  Em \cite{DSMMobileGrids}, foi proposta uma abordagem baseada em espaço de tuplas para
execução de tarefas em grades computacionais móveis. Nesse contexto, o espaço de tuplas
atua como um repositório para código executável e dados das tarefas a serem processadas,
para informações de utilização de recursos e para os resultados dos processamentos. 

  A vantagem da utilização de espaço de tuplas neste caso, conforme descrito em
\cite{DSMMobileGrids}, é que o modelo de comunicação desacoplada fornece meios
para tratar indisponibilidade temporária de recursos, ao passo que nos modelos
tradicionais a necessidade de comunicação permanente entre dispositivos não é uma
característica aceitável com computação móvel.

  A proposta desse trabalho foi implementada utilizando o protocolo Jini\texttrademark,
\cite{Jini}, para o serviço de descoberta, e o JavaSpaces\texttrademark,
\cite{JavaSpacesBook}, como implementação de espaço de tuplas.

    %
    % DSM-based mobile grid
    %
    \subsection{Comet: A Scalable Coordination Space for Decentralized
Distributed Environments}

  O projeto Comet, \cite{comet}, implementa um espaço de tuplas baseado em
conteúdo para ambientes P2P de grande escala. Sua arquitetura provê um espaço
de memória global compartilhado onde tuplas podem ser acessadas por todos os
nós da rede, independente da localização física.

  O modelo é construído sobre uma rede P2P utilizando uma implementação de DHT.
O DHT é tradicionalmente conhecido em redes P2P por suportar entrada e saída
de nós na rede dinamicamente, com excelente desempenho.

  O detalhe interessante do Comet é que a busca de tuplas no espaço pode ser
feita por aproximação. Em sistemas P2P baseados em DHT, a localização de um
elemtno ocorre baseado em um hash gerado para uma determinada informação. O
Comet amplia esse modelo utilizando uma técnica chamada \textit{Hilbert
Space-Filling Curve} para mapear as tuplas utilizando um espaço semântico
de informação. Nesse caso, ao invés de uma tupla estar associada a uma única
chave, como no modelo tradicional, pode ser associada a \textit{k} chaves,
selecionadas a partir do seu conteúdo.

   %
   %
   %
   \section{Modelagem Formal de redes IMS/SIP com CPN}

    \subsection{Análise funcional do protocolo SIP}

     No trabalho \cite{SIP-CPN_2011} foi criado um modelo CPN para a especificação
\textit{Invite Transaction}, considerando canais de comunicação. A principal
característica do trabalho é a validação funcional do protocolo SIP utilizando análise de
espaço de estado. Para a modelagem foram adotados quatro cenários: (i) a transação INVITE
é transmitida sobre um canal confiável; (ii) a transação INVITE é transmitida sobre um
canal não confiável, e apenas o cliente faz retransmissões de mensagem; (iii) a transação
INVITE é transmitida sobre um canal não confiável, e apenas o servidor faz
retransmissões; e (iv) a transação INVITE é transmitida sobre um canal não confiável e
ambos, cliente e servidor, realizam retransmissões de mensagens.

    Em \cite{SIP-CPN_WASET} o protocolo SIP também foi analisado através de um modelo CPN
para a especificação \textit{Invite Transaction}, porém, considerando as recentes
modificações na máquina de estado, conforme especificado na RFC 6026 \cite{rfc6026}. O
objetivo do trabalho foi assegurar a corretude nas modificações, através da análise de
espaço de estado. 

    \cite{SIP-TimedCPN_2011} utilizou um modelo CPN temporizado (Timed CPNs) para análise
do protocolo, também pela criação de modelo CPN para a \textit{Invite Transaction}. 


   %
   % Considerações sobre o capítulo Trabalhos Relacionados
   %
   \section{Considerações}

      Este capítulo apresentou os principais trabalhos relacionados à proposta
desta tese. Em \cite{P2PICIN2006} e \cite{p2psip}, ficou clara a necessidade de
descentralizar o protocolo SIP e os elementos da arquitetura IMS. Ambos utilizam uma
abordagem baseada em redes P2P. Em \cite{DSMMobileGrids} foi proposta uma abordagem
baseada em espaço de tuplas para implementação de grade computacional móvel. A
justificativa pelo espaço de tuplas é justamente sua natureza de comunicação indireta, que
favorece cenários onde existe desconexão temporária dos dispositivos. \cite{comet}
apresenta uma abordagem de construção de espaço de tuplas sobre redes P2P. Os demais
trabalhos utilizaram redes de petri coloridas para modelagem e validação funcional do
protocolo SIP.

      É importante observar que todos eles apresentam algumas características que
serviram de base para este trabalho, no entanto, nenhum propõe a utilização de
espaço de tuplas para implementação de protocolos de comunicação ou para a definição de
arquitetura de redes IMS.